// File: jmcomic-core/src/main/java/dev/jukomu/jmcomic/entity/JmFavoritePage.java
package dev.jukomu.jmcomic.entity;

import dev.jukomu.jmcomic.config.JmModuleConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.AbstractMap.SimpleEntry;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;

/**
 * 对应Python的JmFavoritePage，表示收藏页面的内容。
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class JmFavoritePage extends JmPageContent {

    // 收藏夹列表
    private List<Map<String, String>> folderList;

    /**
     * 构造函数。
     *
     * @param content    分页内容列表
     * @param folderList 收藏夹列表
     * @param total      总结果数
     */
    public JmFavoritePage(List<ContentItem> content, List<Map<String, String>> folderList, int total) {
        super(content, total);
        this.folderList = folderList != null ? Collections.unmodifiableList(folderList) : Collections.emptyList();
    }

    /**
     * 默认构造函数（用于JSON反序列化）。
     */
    public JmFavoritePage() {
        super(null, 0);
        this.folderList = Collections.emptyList();
    }

    @Override
    public int getPageSize() {
        return JmModuleConfig.PAGE_SIZE_FAVORITE;
    }

    /**
     * 获取收藏夹列表。
     *
     * @return 收藏夹Map列表
     */
    public List<Map<String, String>> getFolderList() {
        return folderList;
    }

    /**
     * 返回收藏夹ID和名称的迭代器（Stream）。
     *
     * @return ID和名称的Stream
     */
    public Stream<Map.Entry<String, String>> iterFolderIdName() {
        return folderList.stream().map(folderInfo -> new SimpleEntry<>(folderInfo.get("FID"), folderInfo.get("name")));
    }

    // --- Setters for JSON deserialization if needed ---
    public void setFolderList(List<Map<String, String>> folderList) {
        this.folderList = folderList != null ? Collections.unmodifiableList(folderList) : Collections.emptyList();
    }
}